/**
 * @file InterpolationOperator.h
 * @brief The abstract class of interpolation operator
 * @author XDDDD
 * @version 
 * @date 2021-06-10
 */

#ifndef __PAISLEYPARK__INTERPOLATIONOPERATOR_H__
#define __PAISLEYPARK__INTERPOLATIONOPERATOR_H__

#include <iostream>
#include "MultigridVector.h"


template <size_t DIM>
class InterpolationOperator {
public:
	/**
	 * @brief interpolate the vector on coarse grid to finer one. The boundary of the grid won't be influnced.
	 *
	 * @param _v The given vector, which is multigrid vector, containing all the elements of each grids.
	 * @param _M The coarse grid we want to interpolate from.
	 */
	virtual void operator()(MultigridVector<DIM>& _v, const size_t _M) = 0;
};

#else
//Do nothing.
#endif
